function initOrderModel(sequelize, DataTypes) {
  const Order = sequelize.define('Order', {
    // 在这里定义模型属性
    orderId: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true // 开启自增
    },
    userId: {
      type: DataTypes.INTEGER,
      allowNull: false,
      references: {
        model: 'users', // 关联的表名
        key: 'userId'   // 关联的字段名
      }
    },

    totalPrice: {
      type: DataTypes.FLOAT,
      allowNull: false,
      validate: {
        min: 0
      }
    },
    status: {
      type: DataTypes.ENUM('pending', 'paid', 'canceled', 'completed'),
      defaultValue: 'pending',
      allowNull: false
    },
    paymentMethod: {
      type: DataTypes.STRING(50),
      allowNull: true
    },
    paymentTime: {
      type: DataTypes.DATE,
      allowNull: true
    }
  }, {
    tableName: 'orders',
    indexes: [
      {
        name: 'idx_user_id',
        fields: ['userId']
      },
      {
        name: 'idx_status',
        fields: ['status']
      }
    ]
  });
  
  // 定义关联关系
  Order.associate = function(models) {
    // 一个订单属于一个用户
    Order.belongsTo(models.User, {
      foreignKey: 'userId',
      as: 'user'
    });
    
    // 一个订单可以包含多个门票（通过中间表OrderTicket）
    Order.belongsToMany(models.Ticket, {
      through: models.OrderTicket,
      foreignKey: 'orderId',
      otherKey: 'ticketId',
      as: 'tickets'
    });
    
    // 一个订单有多个订单-门票关联记录
    Order.hasMany(models.OrderTicket, {
      foreignKey: 'orderId',
      as: 'orderTickets'
    });
  };
  
  // 类方法 - 根据用户ID查找订单
  Order.findByUserId = function(userId, options = {}) {
    return this.findAll({
      where: { userId },
      ...options
    });
  };
  
  // 类方法 - 根据状态查找订单
  Order.findByStatus = function(status, options = {}) {
    return this.findAll({
      where: { status },
      ...options
    });
  };
  
  return Order;
}

module.exports = initOrderModel;